\chapter{Fonctionnalités}

Comme toute application, le compilateur Pascal qui a été développé au cours de ce projet, doit posséder un certain nombre de fonctionnalités minimum.

\section{L'interface utilisateur}
L'interface utilisateur TCL est découpée en plusieurs parties :
\begin{itemize}
  \item Manipulation d'un programme Pascal
  \begin{itemize}
    \item Ouvrir fichier .p
    \item Saisie manuelle
    \item Enregistrer .p
  \end{itemize}
  \item Manipulation du pcod
  \begin{itemize}
    \item Ajout de points d'arrêts
    \item Exécution pas à pas
  \end{itemize}
  \item Affichage de la pile d'exécution
  \item Console
  \begin{itemize}
    \item Affichage des erreurs
    \item Interaction utilisateur
  \end{itemize}
\end{itemize}

\section{L'analyseur syntaxique}
Il permet :
\begin{itemize}
  \item D'interpréter la plupart des instructions et composantes du langage Pascal :
  \begin{itemize}
    \item L'en-tête d'un programme : déclaration de constantes et de variables simples ;
    \item Les blocs d'instructions :
    \begin{itemize}
      \item Les conditionnelles et boucles : if et while ;
      \item Les affectations.
    \end{itemize}
  \end{itemize}
  \item  De contrôler la sémantique du programme :
    \begin{itemize}
      \item Détecter les variables, stocker leurs valeurs dans la pile d'exécution
    \end{itemize}
  \item Générer la liste d’erreurs à la compilation
\end{itemize}

\section{Le générateur de pcod}
Il permet de générer du pcod à partir d'un programme Pascal.
Il prend en charge :
\begin{itemize}
  \item Les déclarations de variables
  \item Les affectations
  \item Les opérations de bases : additions, concaténations ...
  \item Les conditions et boucles : if et while
  \item Les appels à des procédures
\end{itemize}
Il génére également la tables symboles qui contient :
\begin{itemize}
  \item Le nom des variables
  \item Le type des variables
\end{itemize}

\section{L'interpréteur de pcod}
Il permet d'interpréter et d'exécuter le pcod :
\begin{itemize}
  \item Création d'une pile d'exécution
  \item Analyse lexical du pcod
  \item Interprétation du pcod
  \item Communication avec l'interface TCL
\end{itemize}

\section{Contraintes}

\subsection{Techniques}
Il sera impératif d’exploiter le langage TCL pour concevoir l’interface graphique, mais également d’utiliser le langage C pour concevoir les différentes parties du noyau du compilateur.
De plus, nous devrons nous familiariser avec la syntaxe du langage Pascal avant de pouvoir développer l’analyseur syntaxique.

\subsection{Temps}

Le projet doit être terminé sur une période de deux mois, ce qui nécessite une répartition du travail adapté, pour nous permettre de parvenir à remplir tous nos objectifs.
